/**
 * 
 */
package co.com.ebusiness.trader.model;

import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.apache.tapestry5.beaneditor.NonVisual;
import org.apache.tapestry5.beaneditor.Validate;

import co.com.ebusiness.trader.core.model.Empresa;
import co.com.ebusiness.trader.seguridad.model.Usuario;

/**
 * @author Luis Agudelo
 *
 */
@Entity
@Table(name = "trd_inventarios")
public class Inventario {
	
	private int idInv;
	private int cantidad;
	private double valorCosto;
	private double valorVentaMenor;
	private double valorVentaMayor;
	private Date fecha = new Date();
	private Usuario usuario;
	private Empresa empresa;
	private List<DetalleInventario> detalles;
	
	
	/**
	 * @return the idInv
	 */
	@Id
    @GeneratedValue
    @Column(name = "idInv")
    @NonVisual
	public int getIdInv() {
		return idInv;
	}
	/**
	 * @param idInv the idInv to set
	 */
	public void setIdInv(int idInv) {
		this.idInv = idInv;
	}
	/**
	 * @return the cantidad
	 */
	@NonVisual
	public int getCantidad() {
		return cantidad;
	}
	/**
	 * @param cantidad the cantidad to set
	 */
	public void setCantidad(int cantidad) {
		this.cantidad = cantidad;
	}
	/**
	 * @return the valorCosto
	 */
	@Column(name = "valorcosto")
	@NonVisual
	public double getValorCosto() {
		return valorCosto;
	}
	/**
	 * @param valorCosto the valorCosto to set
	 */
	public void setValorCosto(double valorCosto) {
		this.valorCosto = valorCosto;
	}
	/**
	 * @return the valorVentaMenor
	 */
	@Column(name = "valorventame")
	@NonVisual
	public double getValorVentaMenor() {
		return valorVentaMenor;
	}
	/**
	 * @param valorVentaMenor the valorVentaMenor to set
	 */
	public void setValorVentaMenor(double valorVentaMenor) {
		this.valorVentaMenor = valorVentaMenor;
	}
	/**
	 * @return the valorVentaMayor
	 */
	@Column(name = "valorventama")
	@NonVisual
	public double getValorVentaMayor() {
		return valorVentaMayor;
	}
	/**
	 * @param valorVentaMayor the valorVentaMayor to set
	 */
	public void setValorVentaMayor(double valorVentaMayor) {
		this.valorVentaMayor = valorVentaMayor;
	}
	/**
	 * @return the fecha
	 */
	@Validate("required")
	public Date getFecha() {
		return fecha;
	}
	/**
	 * @param fecha the fecha to set
	 */
	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}
	/**
	 * @return the usuario
	 */
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="idUsu")
	public Usuario getUsuario() {
		return usuario;
	}
	/**
	 * @param usuario the usuario to set
	 */
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	/**
	 * @return the empresa
	 */
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="idEmp")
	@NonVisual
	public Empresa getEmpresa() {
		return empresa;
	}
	/**
	 * @param empresa the empresa to set
	 */
	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}
	
	/**
	 * @return the detalles
	 */
	@OneToMany(mappedBy = "inventario", cascade = {javax.persistence.CascadeType.ALL}, fetch=FetchType.LAZY, orphanRemoval=true)
	public List<DetalleInventario> getDetalles() {
		return detalles;
	}
	/**
	 * @param detalles the detalles to set
	 */
	public void setDetalles(List<DetalleInventario> detalles) {
		this.detalles = detalles;
	}
	
	
	

}
